import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

export default new Vuex.Store({
    state:{
        todos:[]
    },
    mutations:{
        addTodo(state,todo){
            state.todos.push(todo);
        },
        removeTodo(state,todo){
            state.todos.splice(state.todos.indexOf(todo),1);
        },
        editTodo(state,{todo,done=todo.done}){
            todo.done = done;
        }
    },
    getters:{
        notDoneCount(state){
            return state.todos.filter(item => !item.done).length
        }
    },
    actions:{
       addTodo({commit},text){
            commit('addTodo',{
                text,
                done:false
            })
       },
       removeTodo({commit},todo){
            commit('removeTodo',todo)
       },
       editTodo({commit},todo){
            commit('editTodo',{todo,done:!todo.done})
       },
       toggleAll({commit,state},done){
            state.todos.forEach(item => {
                commit('editTodo',{todo:item,done})
            })
       }
    }
})